#include <stdio.h>
#include <stdlib.h>
#include "linknode.h"

Link_node *creatnode(void)
{
	Link_node *H=(Link_node *)malloc(sizeof(Link_node));
	H->data=0;
	H->next=NULL;

	return H;
}

int hinsertnode(Link_node *H)
{
	int inputnum;
	printf("plz input num\n");
	scanf("%d",&inputnum);
	Link_node *p=(Link_node *)malloc(sizeof(Link_node));
	p->data=inputnum;
	p->next=H->next;
	H->next=p;
	H->data++;

	return 0;
}

int tinsertnode(Link_node *H)
{
	Link_node *p=H;
	while(p->next!=NULL)
	{
		p=p->next;
	}
	int inputnum;
	printf("plz input num\n");

	scanf("%d",&inputnum);
	Link_node *q=(Link_node *)malloc(sizeof(Link_node));
	q->data=inputnum;
	q->next=NULL;
	p->next=q;

	H->data++;

	return 0;
}

int pinsertnode(Link_node *H)
{
	printf("plz input pos\n");
	Link_node *q=H;
	int posnum;
	int inputnum;
	scanf("%d",&posnum);
	printf("plz input num\n");
	scanf("%d",&inputnum);

	Link_node *p=(Link_node *)malloc(sizeof(Link_node));
	p->data=inputnum;
	p->next=NULL;

	for(int i=0;i<posnum;i++)
	{
		q=q->next;
	}

	p->next=q->next;
	q->next=p;

	H->data++;

	return 0;
}

int hdeletenode(Link_node *H)
{
	Link_node *p=H->next;
	H->next=p->next;

	free(p);

	H->data--;
	return 0;
}

int tdeletenode(Link_node *H)
{
	Link_node *q=H;
	while(q->next->next!=NULL)
	{
		q=q->next;
	}
	Link_node *p=q->next;

	q->next=NULL;
	
	free(p);
	H->data--;
	return 0;
}

int pdeletenode(Link_node *H)
{
	Link_node *q=H;
	int posnum;
	printf("plz input posnum\n");
	scanf("%d",&posnum);
	for(int i=0;i<posnum-1;i++)
	{
		q=q->next;
	}
	
	Link_node *p=q->next;
	q->next=p->next;
	free(p);

	H->data--;

	return 0;
}
	
int returnlink(Link_node *H)
{
	Link_node *p=H->next->next;
	H->next->next=NULL;
	while(p!=NULL)
	{
		Link_node *q=p;
		p=p->next;
		
		q->next=H->next;
		H->next=q;
	}

	return 0;
}

int sortlink(Link_node *H)
{
	int len=H->data;
	printf("len=%d\n",len);
	int i=0;
	int j=0;
	Link_node *q=H->next;
	int temp;
	for(i=0;i<len-1;i++)
	{
		for(j=0;j<len-1-i;j++)
		{
			if((q->data)>(q->next->data))
			{
				temp=q->data;
				q->data=q->next->data;
				q->next->data=temp;
			}
			q=q->next;
		}
		q=H->next;
	}
	
	return 0;
}

int view(Link_node *H)
{
	Link_node *q=H;

	while(q->next!=NULL)
	{
		q=q->next;
		printf("%d ",q->data);
	}
	puts(" ");
	
	return 0;
}



